package com.递归;

import java.util.HashMap;
import java.util.Map;

public class 罗马数字转整数 {

    static class Solution {
        /**
         * 这个用的是观测法，观测到罗马数字的规律。
         * @return
         */
        public int romanToInt(String s) {
            int sum = 0 ;
            Map<String,Integer> map = new HashMap<String,Integer>(){{
                put("I",1);
                put("IV",4);
                put("V",5);
                put("IX",9);
                put("X",10);
                put("XL",40);
                put("L",50);
                put("XC",90);
                put("C",100);
                put("CD",400);
                put("D",500);
                put("CM",900);
                put("M",1000);

            }};
            /**
             * for 循环还能这么用 真是涨见识了。
             */
            for(int i = 0;i<s.length();){
                if(i+1 < s.length() && map.containsKey(s.substring(i,i+2))){
                    sum += map.get(s.substring(i,i+2));
                    i += 2;
                }else{
                    sum += map.get(s.substring(i,i+1));
                    i++;
                }
            }
            return sum;

        }
    }
   public static void main(String[] args){
        Solution solution = new Solution();
       System.out.println( solution.romanToInt("MMMM"));

      // System.out.println("ABC".substring(0,2));
   }

}
